from app.utils.getPublicData import getAllTravelInfoMapData
import random
# 函数目的：
# 该函数旨在根据给定的旅游项目标题列表（traveTitleList），从所有旅游信息数据中查找并筛选出标题与之匹配的旅游项目，
# 最终返回这些匹配的旅游项目组成的列表。例如，可用于根据用户输入的多个感兴趣的标题来获取对应的详细旅游信息。
def getAllTravelByTitle(traveTitleList):
    # 实现逻辑：
    # 首先初始化一个空列表resultList，用于存储最终筛选出的符合条件的旅游项目。
    resultList = []
    # 外层循环遍历输入的标题列表（traveTitleList）中的每一个标题（title）。对于每一个标题，都会进入内层循环。
    for title in traveTitleList:
        # 内层循环通过调用getAllTravelInfoMapData()函数（该函数用于获取所有旅游信息数据，返回一个包含众多旅游项目信息的可迭代对象，
        # 每个旅游项目信息对象具有如title等属性）来遍历所有的旅游项目信息。
        for travel in getAllTravelInfoMapData():
            # 在遍历过程中，使用条件判断if title == travel.title，即当输入的标题与当前遍历到的旅游项目的标题完全相同时，
            # 就把这个旅游项目（travel）添加到resultList列表中。
            if title == travel.title:resultList.append(travel)
    # 当所有标题都遍历完，内层循环也相应结束后，resultList列表中就包含了所有标题匹配的旅游项目，最后将该列表返回。
    return resultList
# 函数目的：
# 此函数的目的是从所有旅游信息数据中随机抽取 10 个旅游项目，并以列表的形式返回这些随机抽取的旅游项目信息。可以用于向用户随机推荐旅游项目等场景。
def getRandomTravel():
    # 首先调用getAllTravelInfoMapData()函数获取所有旅游项目信息，并将其赋值给travelList变量，
    travelList = getAllTravelInfoMapData()
    # 接着通过len(travelList)获取旅游项目信息列表的长度，赋值给maxLen变量，用于确定随机数的取值范围。
    maxLen = len(travelList)
    # 初始化一个空列表resultList，用于存放随机抽取的旅游项目信息。
    resultList = []
    # 通过for循环执行 10 次（因为要抽取 10 个旅游项目），在每次循环中：
    for i in range(10):
        # 使用random.randint(0, maxLen)生成一个介于 0（包含）到maxLen（包含）之间的随机整数randomNum，
        # 该随机数将作为索引来从travelList中选取一个旅游项目。
        randomNum = random.randint(0,maxLen)
        # 然后把通过索引选取到的旅游项目（travelList[randomNum]）添加到resultList列表中。
        resultList.append(travelList[randomNum])
    # 循环结束后，resultList列表中就包含了 10 个随机抽取的旅游项目信息，最后将该列表返回。
    return resultList